#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int在正数的范围是1~2147483647(2^32),存不下某些位数很大(比如当A=9,N=100000时,位数为100001)的数字
int main()
{
	int A, N, s[100001] = { 0 };  //记录结果的各个位数,当A=9,N=100000时,有最多位数100001
	scanf("%d %d", &A, &N);
	int carry = 0, figure = 0, num = N;  //num表示某位需要加A的个数,figure用来记录有效最高位的位置 

	//接下来进行竖式加法计算 
	for (int i = 0; i < N + 1; i++)  //i=0表示从个位开始相加,且最多到N+1位(i的值最多为N)
	{
		s[i] = num * A + carry;  //这步的最大值为9*100000=900000<2147483647,往前面的位数只可能比该数小,所以这步不会越界 
		carry = s[i] / 10;  //下一位需要进位多少
		s[i] = s[i] % 10;  //该位数上最后是与10的余数 
		num--;  //位数+1,需要加A的个数-1
	}

	for (int i = N; i >= 0; i--)  //用来判断输出时的有效最高位(有效最高位为从最高位至最低位遍历过程中首个出现非0数字的那一位)
	{
		if (s[i] != 0)
		{
			figure = i;
			break;
		}
	}

	for (int i = figure; i >= 0; i--)  //从有效的最高位开始逐位输出每一位的数字
		printf("%d", s[i]);
	return 0;
}